package com.atguigu.jxc.service.impl;

import com.atguigu.jxc.dao.GoodsTypeMapper;
import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.entity.Log;
import com.atguigu.jxc.service.GoodsService;
import com.atguigu.jxc.service.GoodsTypeService;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

@Service
public class GoodsTypeServiceimpl implements GoodsTypeService {

    @Autowired
    GoodsTypeMapper goodsTypeMapper;






    @Override
   //查询商品所有分类  有顺序的装入
   public String loadGoodsType(){
        return this.getAllGoodsType(-1).toString(); // 根节点默认从-1开始
    }

    /**
     * 递归查询所有商品类别
     * @return
     */
    public JsonArray getAllGoodsType(Integer parentId){

        JsonArray array = this.getGoodSTypeByParentId(parentId);

        for(int i = 0;i < array.size();i++){

            JsonObject obj = (JsonObject) array.get(i);

            if(obj.get("state").getAsString().equals("open")){// 如果是叶子节点，不再递归

                continue;

            }else{// 如果是根节点，继续递归查询

                obj.add("children", this.getAllGoodsType(obj.get("id").getAsInt()));

            }

        }

        return array;
    }

    /**
     * 根据父ID获取所有子商品类别
     * @return
     */
    public JsonArray getGoodSTypeByParentId(Integer parentId){

        JsonArray array = new JsonArray();

        List<GoodsType> goodsTypeList = goodsTypeMapper.selectGoodsType(parentId);

        //遍历商品类别
        for(GoodsType goodsType : goodsTypeList){

            JsonObject obj = new JsonObject();

            obj.addProperty("id", goodsType.getGoodsTypeId());//ID

            obj.addProperty("text", goodsType.getGoodsTypeName());//类别名称

            if(goodsType.getGoodsTypeState() == 1){

                obj.addProperty("state", "closed"); //根节点

            }else{

                obj.addProperty("state", "open");//叶子节点

            }

            obj.addProperty("iconCls", "goods-type");//图标默认为自定义的商品类别图标

            JsonObject attributes = new JsonObject(); //扩展属性

            attributes.addProperty("state", goodsType.getGoodsTypeState());//就加入当前节点的类型

            obj.add("attributes", attributes);

            array.add(obj);

        }

        return array;
    }



//    @Override
//    //查询商品所有分类  有顺序的装入
//    public List<GoodsType> loadGoodsType() {
//         //先把所有的数据都查出来
//         List<GoodsType> list=goodsTypeMapper.loadGoodsType();
//         //判断不为空
//          if (list!=null){
//              List<GoodsType> list1 = selectGoodsType(list);
//              return list1;
//          }
//   return  null;
//    }
//
//    //  按照子父关系进行查询  list是无序的
//    private List<GoodsType> selectGoodsType(List<GoodsType> list) {
//       //装载有序的list集合
//          List youxu=new ArrayList();
//          //遍历集合
//        for (GoodsType goodsType : list) {
//                if (goodsType.getPId()==-1){
//                    youxu.add(goodsType);
//                }
//                 List<GoodsType> list1= goodsTypeMapper.selectGoodsType(goodsType.getGoodsTypeId());
//                if (list1.size()>1){
//                    goodsType.setList(list1);
//                    selectGoodsType(list1);
//                }
//        }
//   return  youxu;
//    }

    //新增分类
    @Override
    public void save(String goodsTypeName, Integer pId) {
        goodsTypeMapper.save(goodsTypeName,pId);
    }

    //删除分类
    @Override
    public void delete(Integer goodsTypeId) {
        goodsTypeMapper.delete(goodsTypeId);
    }






}
